Skip to content

feat(analyze): cover static contract backlog - #58

Merged
smiggleworth merged 2 commits into
mainfrom
feat/analyzer-backlog-static-contracts
Jul 30, 2026
Merged

feat(analyze): cover static contract backlog#58
smiggleworth merged 2 commits into
mainfrom
feat/analyzer-backlog-static-contracts

Conversation

@smiggleworth

Copy link
Copy Markdown
Contributor

Summary

  • add conservative static rules for control boundaries, reactive dependencies, row captures, render scope, module identity, query keys, links, route scopes, import subpaths, theme literals, effect-based loading, and test flushing
  • expand Case child validation and render-scoped lifecycle coverage
  • document rule boundaries and transactional safe fixes
  • preserve analyzer performance through cached facts and rule activation guards

Deliberate boundaries

  • Case accessors remain valid when called in when={value()}
  • dependency analysis skips spreads, dynamic arrays, and uninvoked nested functions
  • module identity only reports lazy() and defineScope() during proven component render
  • data-loading detection only reports direct fetch-to-same-component-state flows
  • testing detection requires synchronous flush() or result.flush() before the next assertion

Validation

  • npm run check (201 tests)
  • focused analyzer, CLI, and guardrail tests (31 tests)
  • npm run test:templates (all five packed templates)
  • analyzer means: 36.2 ms / 162.5 ms / 165.8 ms against 100 / 250 / 300 ms budgets
  • git diff --check

Closes #35
Closes #37
Closes #38
Closes #39
Closes #41
Closes #44
Closes #45
Closes #47
Closes #49
Closes #50

Addresses #36
Addresses #40
Addresses #42
Addresses #43
Addresses #48

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment